1. Field of the Invention
The present invention relates generally to the data processing field and, more particularly, to a computer implemented method, system and computer usable program code for sharing resources among a plurality of hierarchically arranged containers of resources in a data processing system.
2. Description of the Related Art
Many Integrated Development Environments (IDEs) such as Eclipse, JBuilder® and Virtual Studio®, help software developers manage the source code of their applications using an artifact referred to as a “project.” A project defines a compilation unit in which source files are stored and can be built to produce an executable program.
In the case of multi-tiered applications, the source code is usually distributed among several projects, with each project being dedicated to a specific tier. A typical example is a client-server application, where one project is used to implement client components and another project is used to implement server components. Each tier is part of the same system and it frequently occurs that one or more components, a messaging API (Application Program Interface) for example, need to be replicated and used in several tiers of the application. Consequently, the source files of these components have to be shared among several projects.
Several approaches are currently available for managing source files that are shared among a plurality of projects. One approach is to give the developer the responsibility of maintaining multiple copies of the files in different projects. This approach, however, requires substantial effort from the developer who has to manually handle the file creations/deletions and keep the copies in sync.
Another approach is to declare a reference to an external project, and include the content of the referenced project in the local compiler path. This is the standard mechanism for sharing components among several projects using the features provided by an IDE. This approach, however, has several drawbacks including the following:                Coarse granularity: Only complete projects can be shared. The developer cannot share finer grain components.        Hidden sharing: The sharing operation is hidden behind obscure properties so that the developer has no visibility on the shared components.        
It would, accordingly, be desirable to provide an improved mechanism for sharing resources among a plurality of containers of resources in a data processing system.